package com.jumi.microservice.service;

import com.jumi.microservice.domain.CategoryDTO;
import com.jumi.microservice.domain.CategoryQuery;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 商品分类管理service组件接口
 *
 * @author Administrator
 */
public interface CategoryService {

    /**
     * 分页查询商品分类
     *
     * @param categoryQuery 查询条件
     * @return 商品分类列表
     */
    List<CategoryDTO> listCategoryByPage(CategoryQuery categoryQuery);

    /**
     * 根据商品分类id查询商品分类
     *
     * @param id 商品分类id
     * @return 商品分类
     */
    CategoryDTO getCategoryById(Long id);

    /**
     * 新增商品分类
     *
     * @param category 商品分类
     * @param request  HttpServletRequest
     */
    void saveCategory(CategoryDTO category, HttpServletRequest request);

    /**
     * 更新商品分类
     *
     * @param category 商品分类
     * @param request  HttpServletRequest
     */
    void updateCategory(CategoryDTO category, HttpServletRequest request);

    /**
     * 删除商品分类
     *
     * @param ids     账号ids,支持批量删除,商品分类ID以逗号分割
     * @param request HttpServletRequest
     */
    void removeCategoryById(String ids, HttpServletRequest request);

    /**
     * 商品分类状态启用/停用
     *
     * @param id      主键id
     * @param status  状态 (1启用，0.禁用)
     * @param request HttpServletRequest
     */
    void enableStatus(Long id, Integer status, HttpServletRequest request);

    /**
     * 返回商品分类列表(给商品管理列表也使用)
     * @param type 如果不为null 取一级菜单
     *
     * @return 商品分类列集合
     */
    List<CategoryDTO> listCategory(Long type);

    /**
     * 返回商品分类列表
     *@param id     商品分类id
     * @return 商品分类列集合
     */
    List<CategoryDTO> listCategoryById(Long id);
}
